package com.newshub.logging.annotation;

import java.lang.annotation.*;

/**
 * 业务日志注解
 * 用于标记需要记录业务操作日志的方法
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface BusinessLog {
    
    /**
     * 业务模块名称
     */
    String module() default "";
    
    /**
     * 操作描述
     */
    String description() default "";
    
    /**
     * 日志级别
     */
    LogLevel level() default LogLevel.INFO;
    
    /**
     * 是否异步记录
     */
    boolean async() default true;
    
    /**
     * 是否记录请求参数
     */
    boolean recordParams() default true;
    
    /**
     * 是否记录返回结果
     */
    boolean recordResult() default false;
    
    /**
     * 是否记录用户信息
     */
    boolean recordUser() default true;
    
    /**
     * 敏感字段，这些字段的值会被脱敏
     */
    String[] sensitiveFields() default {};
}
